#!/usr/bin/env python3
"""
数据库迁移脚本 - 更新联系人表结构
添加is_primary字段，用于标识主要联系人
"""

import sqlite3
import os
from datetime import datetime

# 数据库文件路径
DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'database', 'eqsystem.db')

def migrate_contact_table():
    """迁移联系人表结构"""
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    
    try:
        print("开始迁移联系人表结构...")
        
        # 1. 检查表是否存在
        cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='contact'")
        if not cursor.fetchone():
            print("错误：联系人表不存在")
            return False
        
        # 2. 检查is_primary字段是否已存在
        cursor.execute("PRAGMA table_info(contact)")
        columns = [column[1] for column in cursor.fetchall()]
        
        if 'is_primary' not in columns:
            # 3. 添加is_primary字段
            print("添加is_primary字段...")
            cursor.execute("ALTER TABLE contact ADD COLUMN is_primary BOOLEAN DEFAULT 0")
            print("is_primary字段添加成功")
        else:
            print("is_primary字段已存在，跳过添加")
        
        # 提交事务
        conn.commit()
        print("联系人表结构迁移完成！")
        
        return True
        
    except Exception as e:
        print(f"迁移过程中发生错误: {str(e)}")
        conn.rollback()
        return False
        
    finally:
        conn.close()

if __name__ == "__main__":
    print(f"开始联系人表迁移，时间: {datetime.now()}")
    print(f"数据库路径: {DB_PATH}")
    
    # 迁移联系人表
    if migrate_contact_table():
        print("联系人表迁移成功完成！")
    else:
        print("联系人表迁移失败！")
        exit(1)